package active;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @author 陈华旺
 * @version 1.0
 * @date 2023年11月21日 15:47
 * @Description TODO
 */
@WebServlet(value = "/test09",
//    通过为 WebServlet 注解定义 initParams 属性 取值由多个 WebInitParam 注解组成
//          WebInitParam 注解中通过 name设置参数名 ，value 设置参数值
    initParams = {
        @WebInitParam(name="charset",value="UTF-8"),
        @WebInitParam(name="initParam",value="初始化参数"),
    }
)
public class Test09Servlet extends HttpServlet {
    private String charset;
    private String initParam;

//    @Override
//    public void init(ServletConfig config) throws ServletException {
//        super.init(config);
//    }

    @Override
    public void init(ServletConfig config) throws ServletException {
//        int 方法是所有Servlet类默认会直接调用的方法，该方法常用与获取初始化配置
//        重写该方法时一定要保留 super.init(config) 代码
//        如果删除后续的方法无法通过getServletConfig加载配置对象
        super.init(config);
        System.out.println("初始化方法执行========>");
        String charset = config.getInitParameter("charset");
        String initParam = config.getInitParameter("initParam");
        System.out.println( "初始化参数-charset:"+charset );
        System.out.println( "初始化参数-initParam:"+initParam );
        this.charset = charset;
        this.initParam = initParam;
        System.out.println("<========初始化方法执行");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        servlet 执行方法中可以通过 getServletConfig 父类方法获取到当前Servlet的配置
//                通过配置对象执行 getInitParameter 方法并传入初始参数名加载初始化参数，用于后续逻辑
//        ServletConfig servletConfig = getServletConfig();
//        String charset = servletConfig.getInitParameter("charset");
//        String initParam = servletConfig.getInitParameter("initParam");
        System.out.println( "初始化参数-charset:"+charset );
        System.out.println( "初始化参数-initParam:"+initParam );

        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.println("/test09 - Test09Servlet");
    }
}
